void main() {
  // 记录表达式示例
  final record = ('first', a: 2, b: true, 'last');
  print('记录表达式示例: $record');

  // 记录类型注解示例
  (int, int) swap((int, int) record) {
    final (a, b) = record;
    return (b, a);
  }

  final swapped = swap((1, 2));
  print('记录类型注解示例: $swapped');

  // 记录类型注解在变量声明中
  late (String, int) recordAnnotation;
  recordAnnotation = ('A string', 123);
  print('记录类型注解在变量声明中: $recordAnnotation');

  // 命名字段的记录类型注解和表达式
  late ({int a, bool b}) namedRecord;
  namedRecord = (a: 123, b: true);
  print('命名字段的记录示例: $namedRecord');

  // 不同命名字段的记录类型
  // 添加打印语句使用recordAB的值
  final ({int a, int b}) recordAB = (a: 1, b: 2);
  print('记录AB的值: $recordAB');
  // 使用recordXY的值进行打印
  final ({int x, int y}) recordXY = (x: 3, y: 4);
  print('记录XY的值: $recordXY');
  // recordAB = recordXY; // 编译错误！记录类型不同。

  // 命名 positional 的记录类型注解
  (int a, int b) recordAB2 = (1, 2);
  final (int x, int y) recordXY2 = (3, 4);
  recordAB2 = recordXY2; // OK.
  print('命名 positional 的记录类型注解: $recordAB2');
}
